Freigeben über


System.Nullable<T-Struktur>

Hinweis

Dieser Artikel enthält ergänzende Hinweise zur Referenzdokumentation für diese API.

Die Nullable Klasse stellt einen Werttyp dar, der zugewiesen nullwerden kann.

Ein Typ wird als nullable bezeichnet, wenn ihm ein Wert oder null zugewiesen werden kann, was bedeutet, dass der Typ keinen Wert hat. Standardmäßig sind alle Verweistypen, z. B. String, nullable, aber alle Werttypen, z. B. Int32, sind nicht nullable.

In C# und Visual Basic markieren Sie einen Werttyp als Nullwerte, indem Sie die ? Schreibweise nach dem Werttyp verwenden. Zum Beispiel wird in int? C# oder Integer? Visual Basic ein ganzzahliger Werttyp deklariert, der null zugewiesen werden kann.

Die Nullable<T> Struktur unterstützt nur die Verwendung eines Werttyps als nullablen Typ, da Verweistypen entwurfsbedingt nullfähig sind.

Die Nullable Klasse bietet ergänzende Unterstützung für die Nullable<T> Struktur. Die Nullable Klasse unterstützt das Abrufen des zugrunde liegenden Typs eines nullfähigen Typs sowie Vergleichs- und Gleichheitsvorgänge für Paare nullabler Typen, deren zugrunde liegender Werttyp keine generischen Vergleichs- und Gleichheitsvorgänge unterstützt.

Grundlegende Eigenschaften

Die beiden grundlegenden Elemente der Nullable<T>-Struktur sind die HasValue- und die Value-Eigenschaften. Wenn die HasValue Eigenschaft für ein Nullable<T> Objekt lautet true, kann mit der Value Eigenschaft auf den Wert des Objekts zugegriffen werden. Wenn die HasValue-Eigenschaft false ist, ist der Wert des Objekts undefiniert, und ein Versuch, auf die Value-Eigenschaft zuzugreifen, löst eine InvalidOperationException aus.

Boxing und Unboxing

Wenn ein Nullable-Typ verpackt wird, verpackt die Common Language Runtime automatisch den zugrunde liegenden Wert des Nullable<T>-Objekts, nicht das Nullable<T>-Objekt selbst. Das heißt, wenn die HasValue-Eigenschaft gleich true ist, wird der Inhalt der Value-Eigenschaft geboxt. Wenn der zugrunde liegende Wert eines nullfähigen Typs unboxiert ist, erstellt die Common Language Runtime eine neue Nullable<T> Struktur, die für den zugrunde liegenden Wert initialisiert wurde.

Wenn die HasValue-Eigenschaft eines nullfähigen Typs false ist, ist das Ergebnis eines Boxvorgangs null. Wenn also ein geboxtes Nullable-Typ an eine Methode übergeben wird, die ein Objektargument erwartet, muss diese Methode darauf vorbereitet sein, den Fall zu behandeln, in dem das Argument null ist. Wenn null in einen nullfähigen Typ konvertiert wird, erstellt die Common Language Runtime eine neue Nullable<T>-Struktur und initialisiert ihre HasValue-Eigenschaft auf false.

Komponenten für Windows-Runtime

Sie können einen Nullable<T> Typ als Element einer Struktur einschließen, die in eine WinMD-Bibliothek exportiert wird.